{
 "cells": [
  {
   "cell_type": "markdown",
   "source": [
    "# 使用搜索引擎给用户推送一些兴趣爱好信息\n",
    "## 1. 初始化环境变量"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "d53fe985b294a63f"
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "API_BASE_URL: https://cognihubemp.baystoneai.com/cognihub/service\n"
     ]
    }
   ],
   "source": [
    "from dotenv import load_dotenv\n",
    "import os\n",
    "\n",
    "# 加载 .env 文件\n",
    "load_dotenv()\n",
    "\n",
    "# 读取环境变量\n",
    "API_BASE_URL = os.getenv(\"API_BASE_URL\")\n",
    "API_KEY = os.getenv(\"API_KEY\")\n",
    "langsmith_api_key = os.getenv(\"LANGSMITH_API_KEY\")\n",
    "SEAR_XNG_HOST = os.getenv(\"SEAR_XNG\")\n",
    "print(\"API_BASE_URL:\", API_BASE_URL)"
   ],
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2024-11-12T06:34:13.949830Z",
     "start_time": "2024-11-12T06:34:13.939218Z"
    }
   },
   "id": "initial_id",
   "execution_count": 41
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 2.测试搜索引擎"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "106b09588aac7d2"
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "'自然水域. \"22℃商洛·中国康养之都\". 中国钓鱼运动协会 关于举办\"亚王·红电杯\"第十三届中国升钟湖国际钓鱼大赛系列活动三项钓鱼比赛的通知 -09-19. 全国自然水域垂钓系列大赛中国冠县钓鱼邀请赛圆满举办 -09-04. 300多支队伍、600多运动员挥 ...'"
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from langchain_community.utilities import SearxSearchWrapper\n",
    "searx = SearxSearchWrapper(searx_host=SEAR_XNG_HOST)\n",
    "searx.run(\"2024年钓鱼比赛?\", engine=\"qwant\")"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-11-12T08:29:54.175242Z",
     "start_time": "2024-11-12T08:29:51.427821Z"
    }
   },
   "id": "cfce8e050354cae8",
   "execution_count": 73
  },
  {
   "cell_type": "markdown",
   "source": [
    "### 2.1 测试一"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "b7f388b5efb89a6d"
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "'自然水域. “22℃商洛·中国康养之都”. 中国钓鱼运动协会 关于举办“亚王·红电杯”第十三届中国升钟湖国际钓鱼大赛系列活动三项钓鱼比赛的通知 2024-09-19. 全国自然水域垂钓系列大赛中国冠县钓鱼邀请赛圆满举办 2024-09-04. 300多支队伍、600多运动员挥竿竞技 ...\\n\\n6月28日，“大美喀什·游钓疏勒·丝路重镇·多彩疏勒”2024年“全能王”全国钓鱼锦标赛（新疆疏勒站）暨中国龙传统文化交流活动在疏勒印象垂钓中心盛大开幕。. 国家体育总局监察局原局长、中国钓鱼运动协会会长施泽华，国家体育总局社会体育指导中心、社会体育指导员工作部主任、中国钓鱼 ...\\n\\n5月30日，由中国钓鱼运动协会、东平县人民政府主办的2024年“全能王”全国钓鱼锦标赛（山东东平站），在山东东平县千年州城状元湖垂钓小镇开赛。来自全国各地近500名竞钓高手参加了比赛，共同角逐2024首场全能王分站赛冠军奖杯。 当天上午，开幕式隆重 ...\\n\\n日前，2024年全国钓鱼锦标赛在山东泰安落幕。\\n\\n经过两天的激烈角逐，2024年“全能王”全国钓鱼锦标赛（新疆疏勒站）顺利完成各项比赛项目，在疏勒印象垂钓中心圆满收竿。 比赛共设5个项目，来自全国各地的近500名钓友齐聚比赛现\\u200d\\u200d\\u200d\\u200d场，同场切磋钓技，在竞技赛场展示竞技水平和风采。\\n\\n5月30日，由中国钓鱼运动协会、东平县人民政府主办的2024年“全能王”全国钓鱼锦标赛（山东东平站），在山东东平县千年州城状元湖垂钓小镇开赛。来自全国各地近500名竞钓高手参加了比赛，共同角逐2024首场全能王分站赛冠军奖杯。 当天上午，开幕式隆重 ...\\n\\n2024年“全能王”全国钓鱼锦标赛（新疆疏勒站）暨中国龙传统文化交流活动开幕现场。 ... 提供了很好的休息、饮食场所，在后面的几天，我也会带着朋友们一起过来欣赏钓手们的比赛。” 2024年“全能王”全国钓鱼锦标赛（新疆疏勒站）暨中国龙传统文化交流 ...\\n\\n5月30日，由中国钓鱼运动协会、东平县人民政府主办的2024年“全能王”全国钓鱼锦标赛（山东东平站），在山东东平县千年州城状元湖垂钓小镇开赛。来自全国各地近500名竞钓高手参加了比赛，共同角逐2024首场全能王分站赛冠军奖杯。\\n\\n2024年“夕阳红杯”老年人钓鱼比赛举行; 128名高手打擂！这项全国总决赛将在湖; 2024中国常德桃花源快手中国湖库休闲垂; 40万大奖等你来赢！2024中国湖库休闲垂; 四川西昌上演钓鱼争霸赛-2024中华垂钓; 11市高手齐聚睢宁！省级垂钓大赛圆满收\\n\\n开幕式上，中国国家体育总局社会体育指导中心社会指导员工作部主任、中国钓鱼运动协会秘书长苏宝生将2024年“全能王”全国钓鱼锦标赛赛旗交予本站比赛承办地疏勒县。. 疏勒县委书记宋良强致欢迎辞，他表示，近年来，疏勒县认真落实自治区党委、地委 ...'"
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "searx.run(\"2024年钓鱼比赛?\", query_suffix=\"!qwant\")"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-11-12T08:29:47.686641Z",
     "start_time": "2024-11-12T08:29:46.361810Z"
    }
   },
   "id": "699c766ba546c2cb",
   "execution_count": 72
  },
  {
   "cell_type": "markdown",
   "source": [
    "### 2.2 测试二"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "b3e6942660582370"
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "[{'snippet': '2024年\"全能王\"全国钓鱼锦标赛 (新疆疏勒站)作为经中国钓鱼运动协会批准的国家级一类赛事,也是疏勒印象 垂钓 中心举办的第二届全国性 垂钓 大赛，希望通过本届大赛，向更多朋友更好推介疏勒，进一步打响\"丝路重镇·多彩疏勒\"旅游品牌。 喀什地区行署二级巡视员罗翔在致辞中说，近年来，在自治区党委、自治区人民政府的坚强领导下，喀什地区认真贯彻党的体育方针，坚持正确的体育发展方向，全民健身蓬勃发展，竞技体育屡创佳绩，民族体育快速发展，体育产业不断壮大，体育旅游蒸蒸日上。 今年，疏勒县再次举办\"全能王\"全国钓鱼锦标赛，是充分展示\"大美喀什·游钓疏勒\"的魅力的具体行动，对于打造运动喀什、健康喀什、活力喀什具有十分重要而深远的意义，必将推动喀什地区体育与文化、体育与旅游、体育与乡村振兴高度融合。',\n  'title': '2024\"全能王\"全国钓鱼锦标赛（新疆疏勒站）暨中国龙传统 ...',\n  'link': 'https://www.cnfisher.com/2024/diaoyubisai_0629/96587.html',\n  'engines': ['duckduckgo', 'qwant'],\n  'category': 'general'},\n {'snippet': '自然水域. “22℃商洛·中国康养之都”. 中国钓鱼运动协会 关于举办“亚王·红电杯”第十三届中国升钟湖国际钓鱼大赛系列活动三项钓鱼比赛的通知 2024-09-19. 全国自然水域垂钓系列大赛中国冠县钓鱼邀请赛圆满举办 2024-09-04. 300多支队伍、600多运动员挥竿竞技 ...',\n  'title': '中国钓鱼运动协会官方网站',\n  'link': 'http://chinacaa.org.cn/',\n  'engines': ['duckduckgo', 'qwant'],\n  'category': 'general'},\n {'snippet': '开幕式上，国家体育总局社会体育指导中心社会指导员工作部主任、中国钓鱼运动协会秘书长苏宝生将2024年\"全能王\"全国钓鱼锦标赛赛旗交予本站比赛承办地疏勒县。 疏勒县委书记宋良强致欢迎辞，他表示，近年来，疏勒县认真落实自治区党委、地委\"旅游兴疆\"\"旅游兴喀\"战略部署，积极融入\"喀什城市圈\"旅游规划，加速推进\"旅游+\"融合发展，创建了多个国家A级旅游景区，开发\"农文旅\"\"工业游\"\"科普游\"\"冰雪游\"\"红色游\"\"赛事游\"等一批精品旅游特色线路。 2024年\"全能王\"全国钓鱼锦标赛 (新疆疏勒站)作为经中国钓鱼运动协会批准的国家级一类赛事，也是疏勒印象垂钓中心举办的第二届全国性垂钓大赛，希望通过本届大赛，向更多朋友更好推介疏勒，进一步打响\"丝路重镇·多彩疏勒\"旅游品牌。',\n  'title': '2024年\"全能王\"全国钓鱼锦标赛（新疆疏勒站）暨中国龙传统 ...',\n  'link': 'http://xj.news.cn/zt/2024-06/29/c_1130170995.htm',\n  'engines': ['duckduckgo', 'qwant'],\n  'category': 'general'},\n {'snippet': '经过两天的激烈角逐，2024年\"全能王\"全国钓鱼锦标赛（新疆疏勒站）顺利完成各项比赛项目，在疏勒印象垂钓中心圆满收竿。 比赛共设5个项目，来自全国各地的近500名钓友齐聚比赛现\\u200d\\u200d\\u200d\\u200d场，同场切磋钓技，在竞技赛场展示竞技水平和风采。 记者在比赛现场看到，参赛选手静气凝神、目光沉着，放饵料、抛竿、拉钩，最后起网迅速将钓到的鲫鱼、鲤鱼、草鱼等收入网中，动作娴熟，一气呵成，展现出超凡的垂钓技术。 经过激烈比拼，周义博 、柳超峰 、蹇维华等选手进入了决赛，决赛分为3节，共计90分钟，进入决赛的3名选手进行5.4米手竿钓混合鱼重量PK赛，最终周义博获得了冠军，柳超峰和蹇维华分获亚军和季军。',\n  'title': '2024年\"全能王\"全国钓鱼锦标赛（新疆疏勒站）圆满收竿 ...',\n  'link': 'http://xj.news.cn/zt/2024-07/02/c_1130172386.htm',\n  'engines': ['duckduckgo', 'qwant'],\n  'category': 'general'},\n {'snippet': '2024年\"全能王\"全国钓鱼锦标赛（新疆疏勒站）作为经中国钓鱼运动协会批准的国家级一类赛事，也是疏勒印象垂钓中心举办的第二届全国性垂钓大赛，希望通过本届大赛，向更多朋友更好推介疏勒，进一步打响\"丝路重镇·多彩疏勒\"旅游品牌。 2024年\"全能王\"全国钓鱼锦标赛（新疆疏勒站）暨中国龙传统文化交流活动开幕现场。 疏勒县融媒体中心 宋佳飞 摄. 喀什地区行署二级巡视员罗翔在致辞中说，近年来，在自治区党委、自治区人民政府的坚强领导下，喀什地区认真贯彻党的体育方针，坚持正确的体育发展方向，全民健身蓬勃发展，竞技体育屡创佳绩，民族体育快速发展，体育产业不断壮大，体育旅游蒸蒸日上。',\n  'title': '2024年\"全能王\"全国钓鱼锦标赛（新疆疏勒站）暨中国龙传统 ...',\n  'link': 'http://www.xj.chinanews.com.cn/dizhou/2024-07-01/detail-ihecwwfa4570287.shtml',\n  'engines': ['duckduckgo', 'qwant'],\n  'category': 'general'}]"
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "searx.results(\"2024年钓鱼比赛?\", num_results=5, engine=\"qwant\")"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-11-12T08:29:44.864438Z",
     "start_time": "2024-11-12T08:29:41.483215Z"
    }
   },
   "id": "7c5e45b14508aed9",
   "execution_count": 71
  },
  {
   "cell_type": "markdown",
   "source": [
    "### 2.3 测试三"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "a1d993bd0d0b3969"
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[{'snippet': '自然水域. “22℃商洛·中国康养之都”. 中国钓鱼运动协会 关于举办“亚王·红电杯”第十三届中国升钟湖国际钓鱼大赛系列活动三项钓鱼比赛的通知 2024-09-19. 全国自然水域垂钓系列大赛中国冠县钓鱼邀请赛圆满举办 2024-09-04. 300多支队伍、600多运动员挥竿竞技 ...', 'title': '中国钓鱼运动协会官方网站', 'link': 'http://chinacaa.org.cn/', 'engines': ['duckduckgo', 'qwant'], 'category': 'general'}, {'snippet': '2024年\"全能王\"全国钓鱼锦标赛 (新疆疏勒站)作为经中国钓鱼运动协会批准的国家级一类赛事,也是疏勒印象 垂钓 中心举办的第二届全国性 垂钓 大赛，希望通过本届大赛，向更多朋友更好推介疏勒，进一步打响\"丝路重镇·多彩疏勒\"旅游品牌。 喀什地区行署二级巡视员罗翔在致辞中说，近年来，在自治区党委、自治区人民政府的坚强领导下，喀什地区认真贯彻党的体育方针，坚持正确的体育发展方向，全民健身蓬勃发展，竞技体育屡创佳绩，民族体育快速发展，体育产业不断壮大，体育旅游蒸蒸日上。 今年，疏勒县再次举办\"全能王\"全国钓鱼锦标赛，是充分展示\"大美喀什·游钓疏勒\"的魅力的具体行动，对于打造运动喀什、健康喀什、活力喀什具有十分重要而深远的意义，必将推动喀什地区体育与文化、体育与旅游、体育与乡村振兴高度融合。', 'title': '2024\"全能王\"全国钓鱼锦标赛（新疆疏勒站）暨中国龙传统 ...', 'link': 'https://www.cnfisher.com/2024/diaoyubisai_0629/96587.html', 'engines': ['duckduckgo', 'qwant'], 'category': 'general'}, {'snippet': '直播丨2024年“全能王”全国钓鱼锦标赛（上海站）. 10月19-20日，2024年“全能王”全国钓鱼锦标赛（上海站）在浦东新区老港镇举行，来自全国各地的400余名垂钓选手、爱好者相聚一堂，开展激烈角逐。. 作者： 澎湃新闻导播 柳彦 编辑 柳彦.', 'title': '直播丨2024年\"全能王\"全国钓鱼锦标赛（上海站） - 澎湃新闻', 'link': 'https://www.thepaper.cn/newsDetail_forward_29091914', 'engines': ['duckduckgo', 'qwant'], 'category': 'general'}, {'snippet': '5月30日，由中国钓鱼运动协会、东平县人民政府主办的2024年\"全能王\"全国钓鱼锦标赛（山东东平站），在山东东平县千年州城状元湖垂钓小镇开赛。 来自全国各地近500名竞钓高手参加了比赛，共同角逐2024首场全能王分站赛冠军奖杯。 当天上午，开幕式隆重举行。 国家体育总局监察局原局长，中国钓鱼运动协会会长施泽华，山东省政协文史委原主任刘凤岐，山东省老体协副主席王嗣华，国家体育总局社会体育指导中心指导员工作部主任、中国钓鱼运动协会秘书长苏宝生，中国钓鱼运动协会常委化绍新，东平县委副书记张延玲，东平县政协原主席、县老年体协首席顾问刘祥涛，东平县教育和体育局党组成员、副局长常萌，东平县州城街道党工委副书记吕三虎，四川金龙鱼饵有限公司总经理左贤金，威海巧渔夫钓具有限公司总经理张永杰等参加了开幕仪式。', 'title': '2024 年\"全能王\"全国钓鱼锦标赛（山东东平站）圆满\"收杆\"', 'link': 'https://baijiahao.baidu.com/s?id=1800970017340049920', 'engines': ['duckduckgo', 'qwant'], 'category': 'general'}, {'snippet': '经过两天的激烈角逐，2024年\"全能王\"全国钓鱼锦标赛（新疆疏勒站）顺利完成各项比赛项目，在疏勒印象垂钓中心圆满收竿。 比赛共设5个项目，来自全国各地的近500名钓友齐聚比赛现\\u200d\\u200d\\u200d\\u200d场，同场切磋钓技，在竞技赛场展示竞技水平和风采。 记者在比赛现场看到，参赛选手静气凝神、目光沉着，放饵料、抛竿、拉钩，最后起网迅速将钓到的鲫鱼、鲤鱼、草鱼等收入网中，动作娴熟，一气呵成，展现出超凡的垂钓技术。 经过激烈比拼，周义博 、柳超峰 、蹇维华等选手进入了决赛，决赛分为3节，共计90分钟，进入决赛的3名选手进行5.4米手竿钓混合鱼重量PK赛，最终周义博获得了冠军，柳超峰和蹇维华分获亚军和季军。', 'title': '2024年\"全能王\"全国钓鱼锦标赛（新疆疏勒站）圆满收竿 ...', 'link': 'http://xj.news.cn/zt/2024-07/02/c_1130172386.htm', 'engines': ['duckduckgo', 'qwant'], 'category': 'general'}]\n"
     ]
    }
   ],
   "source": [
    "web_search = searx.results(\"2024年钓鱼比赛\", num_results=5, engine=\"qwant\")\n",
    "print(web_search)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-11-12T07:49:48.574999Z",
     "start_time": "2024-11-12T07:49:47.010213Z"
    }
   },
   "id": "e7012d61309d82ab",
   "execution_count": 66
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 3. 初始化 LLM"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "89d45670ef6ecc60"
  },
  {
   "cell_type": "code",
   "outputs": [],
   "source": [
    "from langchain_openai import ChatOpenAI\n",
    "\n",
    "llm = ChatOpenAI(\n",
    "        model=\"qwen2.5-instruct\",\n",
    "        base_url=f'{API_BASE_URL}/v1',\n",
    "        api_key=API_KEY,\n",
    "        temperature=0,\n",
    "        streaming=False,\n",
    "        request_timeout=30\n",
    "    )"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-11-12T06:34:23.909060Z",
     "start_time": "2024-11-12T06:34:23.580905Z"
    }
   },
   "id": "a22ab55eec8d4969",
   "execution_count": 46
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 4. 自定义格式化输出的chain"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "8cf1e0125e45426d"
  },
  {
   "cell_type": "code",
   "outputs": [],
   "source": [
    "from langchain_core.prompts import ChatPromptTemplate, PromptTemplate\n",
    "from langchain.output_parsers import PydanticOutputParser\n",
    "from pydantic import BaseModel, Field\n",
    "\n",
    "# 定义数据模型\n",
    "class EventInfo(BaseModel):\n",
    "    event: str = Field(..., alias='事件', description=\"事件的名称或描述\")\n",
    "    time: str = Field(..., alias='时间', description=\"事件的具体日期和时间\")\n",
    "    location: str = Field(..., alias='地点', description=\"事件发生的地点\")\n",
    "    audience: str = Field(..., alias='对象', description=\"通知的目标受众\")\n",
    "    purpose: str = Field(..., alias='目的', description=\"发送此通知的目的或期望的行动\")\n",
    "\n",
    "# 初始化输出解析器\n",
    "output_parser = PydanticOutputParser(pydantic_object=EventInfo)\n",
    "\n",
    "# 获取格式化指令\n",
    "format_instructions = output_parser.get_format_instructions()\n",
    "\n",
    "# 定义提示模板\n",
    "prompt = PromptTemplate(\n",
    "    template=(\n",
    "        \"你是一名专业的信息提取助手。请从以下文本中提取事件、时间、地点、对象和目的信息，必须是一条\"\n",
    "        \"并以 JSON 格式返回结果：\\n\\n{input_text}\"\n",
    "    ),\n",
    "    input_variables=[\"input_text\"],\n",
    "    partial_variables={\"format_instructions\": format_instructions}\n",
    ")\n",
    "\n",
    "chain = prompt | llm"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-11-12T07:52:09.452385Z",
     "start_time": "2024-11-12T07:52:09.311228Z"
    }
   },
   "id": "aee64628f86b3155",
   "execution_count": 67
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 5. 调用链并处理LLM提取结果"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "b175e313f00f5415"
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "根据提供的文本，可以提取出以下信息：\n",
      "\n",
      "- 事件：举办“亚王·红电杯”第十三届中国升钟湖国际钓鱼大赛系列活动三项钓鱼比赛\n",
      "- 时间：2024-09-19\n",
      "- 地点：未明确指出，但根据比赛名称，地点可能与升钟湖相关\n",
      "- 对象：中国钓鱼运动协会\n",
      "- 目的：举办钓鱼比赛\n",
      "\n",
      "将这些信息以 JSON 格式返回如下：\n",
      "\n",
      "```json\n",
      "{\n",
      "  \"事件\": \"举办“亚王·红电杯”第十三届中国升钟湖国际钓鱼大赛系列活动三项钓鱼比赛\",\n",
      "  \"时间\": \"2024-09-19\",\n",
      "  \"地点\": \"升钟湖（具体地点未明确）\",\n",
      "  \"对象\": \"中国钓鱼运动协会\",\n",
      "  \"目的\": \"举办钓鱼比赛\"\n",
      "}\n",
      "```\n",
      "\n",
      "{\"event\":\"举办“亚王·红电杯”第十三届中国升钟湖国际钓鱼大赛系列活动三项钓鱼比赛\",\"time\":\"2024-09-19\",\"location\":\"升钟湖（具体地点未明确）\",\"audience\":\"中国钓鱼运动协会\",\"purpose\":\"举办钓鱼比赛\"}\n",
      "根据提供的文本，提取出的事件、时间、地点、对象和目的信息如下：\n",
      "\n",
      "```json\n",
      "{\n",
      "  \"事件\": \"2024'全能王'全国钓鱼锦标赛\",\n",
      "  \"时间\": \"2024年\",\n",
      "  \"地点\": \"新疆疏勒\",\n",
      "  \"对象\": \"中国钓鱼运动协会、疏勒印象垂钓中心\",\n",
      "  \"目的\": \"推介疏勒，打响'丝路重镇·多彩疏勒'旅游品牌，推动喀什地区体育与文化、体育与旅游、体育与乡村振兴高度融合\"\n",
      "}\n",
      "```\n",
      "\n",
      "{\"event\":\"2024'全能王'全国钓鱼锦标赛\",\"time\":\"2024年\",\"location\":\"新疆疏勒\",\"audience\":\"中国钓鱼运动协会、疏勒印象垂钓中心\",\"purpose\":\"推介疏勒，打响'丝路重镇·多彩疏勒'旅游品牌，推动喀什地区体育与文化、体育与旅游、体育与乡村振兴高度融合\"}\n",
      "```json\n",
      "{\n",
      "  \"事件\": \"全国钓鱼锦标赛\",\n",
      "  \"时间\": \"2024年10月19-20日\",\n",
      "  \"地点\": \"浦东新区老港镇\",\n",
      "  \"对象\": \"来自全国各地的400余名垂钓选手、爱好者\",\n",
      "  \"目的\": \"开展激烈角逐\"\n",
      "}\n",
      "```\n",
      "\n",
      "{\"event\":\"全国钓鱼锦标赛\",\"time\":\"2024年10月19-20日\",\"location\":\"浦东新区老港镇\",\"audience\":\"来自全国各地的400余名垂钓选手、爱好者\",\"purpose\":\"开展激烈角逐\"}\n",
      "```json\n",
      "{\n",
      "  \"事件\": \"2024年'全能王'全国钓鱼锦标赛（山东东平站）\",\n",
      "  \"时间\": \"2024年5月30日\",\n",
      "  \"地点\": \"山东东平县千年州城状元湖垂钓小镇\",\n",
      "  \"对象\": \"中国钓鱼运动协会、东平县人民政府\",\n",
      "  \"目的\": \"举办全国钓鱼锦标赛，来自全国各地近500名竞钓高手参加比赛，共同角逐2024首场全能王分站赛冠军奖杯\"\n",
      "}\n",
      "```\n",
      "\n",
      "{\"event\":\"2024年'全能王'全国钓鱼锦标赛（山东东平站）\",\"time\":\"2024年5月30日\",\"location\":\"山东东平县千年州城状元湖垂钓小镇\",\"audience\":\"中国钓鱼运动协会、东平县人民政府\",\"purpose\":\"举办全国钓鱼锦标赛，来自全国各地近500名竞钓高手参加比赛，共同角逐2024首场全能王分站赛冠军奖杯\"}\n",
      "根据提供的文本，提取出的事件、时间、地点、对象和目的信息如下：\n",
      "\n",
      "```json\n",
      "{\n",
      "  \"事件\": \"全国钓鱼锦标赛\",\n",
      "  \"时间\": \"2024年\",\n",
      "  \"地点\": \"新疆疏勒站（疏勒印象垂钓中心）\",\n",
      "  \"对象\": \"来自全国各地的近500名钓友，包括周义博、柳超峰、蹇维华等选手\",\n",
      "  \"目的\": \"展示竞技水平和风采，进行钓鱼技术的切磋和比赛\"\n",
      "}\n",
      "```\n",
      "\n",
      "{\"event\":\"全国钓鱼锦标赛\",\"time\":\"2024年\",\"location\":\"新疆疏勒站（疏勒印象垂钓中心）\",\"audience\":\"来自全国各地的近500名钓友，包括周义博、柳超峰、蹇维华等选手\",\"purpose\":\"展示竞技水平和风采，进行钓鱼技术的切磋和比赛\"}\n"
     ]
    }
   ],
   "source": [
    "import json\n",
    "res = []\n",
    "for i in web_search:\n",
    "    output = chain.invoke({\"input_text\": i[\"title\"] + \"\\n\" + i[\"snippet\"]})\n",
    "    print(output.content,end=\"\\n\\n\")\n",
    "    # 使用解析器解析模型输出\n",
    "    try:\n",
    "        extracted_info = output_parser.parse(output.content)\n",
    "        json_output = extracted_info.model_dump_json(exclude_unset=True)\n",
    "        print(json_output)\n",
    "        res.append({\n",
    "            \"content\": json.loads(json_output),\n",
    "            \"link\": i[\"link\"],\n",
    "        })\n",
    "    except Exception as e:\n",
    "        print(f\"解析失败：{e}\")"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-11-12T07:53:22.109413Z",
     "start_time": "2024-11-12T07:52:51.244417Z"
    }
   },
   "id": "5c9ebf88b88abcbb",
   "execution_count": 68
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[{'content': {'event': '举办“亚王·红电杯”第十三届中国升钟湖国际钓鱼大赛系列活动三项钓鱼比赛', 'time': '2024-09-19', 'location': '升钟湖（具体地点未明确）', 'audience': '中国钓鱼运动协会', 'purpose': '举办钓鱼比赛'}, 'link': 'http://chinacaa.org.cn/'}, {'content': {'event': \"2024'全能王'全国钓鱼锦标赛\", 'time': '2024年', 'location': '新疆疏勒', 'audience': '中国钓鱼运动协会、疏勒印象垂钓中心', 'purpose': \"推介疏勒，打响'丝路重镇·多彩疏勒'旅游品牌，推动喀什地区体育与文化、体育与旅游、体育与乡村振兴高度融合\"}, 'link': 'https://www.cnfisher.com/2024/diaoyubisai_0629/96587.html'}, {'content': {'event': '全国钓鱼锦标赛', 'time': '2024年10月19-20日', 'location': '浦东新区老港镇', 'audience': '来自全国各地的400余名垂钓选手、爱好者', 'purpose': '开展激烈角逐'}, 'link': 'https://www.thepaper.cn/newsDetail_forward_29091914'}, {'content': {'event': \"2024年'全能王'全国钓鱼锦标赛（山东东平站）\", 'time': '2024年5月30日', 'location': '山东东平县千年州城状元湖垂钓小镇', 'audience': '中国钓鱼运动协会、东平县人民政府', 'purpose': '举办全国钓鱼锦标赛，来自全国各地近500名竞钓高手参加比赛，共同角逐2024首场全能王分站赛冠军奖杯'}, 'link': 'https://baijiahao.baidu.com/s?id=1800970017340049920'}, {'content': {'event': '全国钓鱼锦标赛', 'time': '2024年', 'location': '新疆疏勒站（疏勒印象垂钓中心）', 'audience': '来自全国各地的近500名钓友，包括周义博、柳超峰、蹇维华等选手', 'purpose': '展示竞技水平和风采，进行钓鱼技术的切磋和比赛'}, 'link': 'http://xj.news.cn/zt/2024-07/02/c_1130172386.htm'}]\n"
     ]
    }
   ],
   "source": [
    "print(res)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-11-12T07:54:09.752299Z",
     "start_time": "2024-11-12T07:54:09.741300Z"
    }
   },
   "id": "91e649cc8731fd2f",
   "execution_count": 69
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 6. 将格式化数据输出成一个模版文字"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "d83fed802ca800fc"
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "尊敬的[一休先生]：\n",
      "\n",
      "您好！\n",
      "\n",
      "下面是我整理的一些钓鱼比赛信息，希望您感兴趣：\n",
      "\n",
      "1. 举办“亚王·红电杯”第十三届中国升钟湖国际钓鱼大赛系列活动三项钓鱼比赛将于2024-09-19在升钟湖（具体地点未明确）.\n",
      "\n",
      "2. 2024'全能王'全国钓鱼锦标赛将于2024年在新疆疏勒.\n",
      "\n",
      "3. 全国钓鱼锦标赛将于2024年10月19-20日在浦东新区老港镇.\n",
      "\n",
      "4. 2024年'全能王'全国钓鱼锦标赛（山东东平站）将于2024年5月30日在山东东平县千年州城状元湖垂钓小镇.\n",
      "\n",
      "5. 全国钓鱼锦标赛将于2024年在新疆疏勒站（疏勒印象垂钓中心）.\n",
      "\n",
      "谢谢！\n",
      "\n",
      "[您的助理]\n"
     ]
    }
   ],
   "source": [
    "# 定义消息模板\n",
    "message_template = \"\"\"\n",
    "尊敬的[一休先生]：\n",
    "\n",
    "您好！\n",
    "\n",
    "下面是我整理的一些钓鱼比赛信息，希望您感兴趣：\n",
    "\n",
    "{events}\n",
    "\n",
    "谢谢！\n",
    "\n",
    "[您的助理]\n",
    "\"\"\"\n",
    "\n",
    "# 定义单个事件的模板\n",
    "event_template = \"{index}. {event}将于{time}在{location}.\"\n",
    "\n",
    "# 初始化事件列表\n",
    "event_list = []\n",
    "\n",
    "# 遍历 res 列表，提取并格式化每个事件的信息\n",
    "for idx, item in enumerate(res, start=1):\n",
    "    content = item['content']\n",
    "    event_info = event_template.format(\n",
    "        index=idx,\n",
    "        event=content.get('event', '未知事件'),\n",
    "        time=content.get('time', '未知时间'),\n",
    "        location=content.get('location', '未知地点')\n",
    "    )\n",
    "    event_list.append(event_info)\n",
    "\n",
    "# 将所有事件信息合并为一个字符串，每个事件占一行\n",
    "events_str = \"\\n\\n\".join(event_list)\n",
    "\n",
    "# 将事件信息填充到消息模板中\n",
    "final_message = message_template.format(events=events_str)\n",
    "\n",
    "# 输出最终的消息\n",
    "print(final_message)\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-11-12T07:56:00.149336Z",
     "start_time": "2024-11-12T07:56:00.124440Z"
    }
   },
   "id": "428bad235fc28a9e",
   "execution_count": 70
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
